package com.creataion;
//单例特点
//某个类只能有一个实例；（构造器私有）
//它必须自行创建这个实例；（自己编写实例化逻辑）
//它必须自行向整个系统提供这个实例；（对外提供实例化方法）


//一个单一的类，负责创建自己的对象，同时确保系统中只有单个对象被创建。

public class BoyFriend {
    private String name;
    private Integer age;


    private static BoyFriend instance;
//    构造器私有化，外部不能实例化
    private BoyFriend(){
        System.out.println("我就只有这么一个男朋友");
    }
    public static BoyFriend getObject(){
//        先判断是否有对象
        if (instance == null){//如果没有
            System.out.println("你有男朋友吗？");
            synchronized (BoyFriend.class){
                if (instance == null){
                    System.out.println("你还真没有男朋友");
                    BoyFriend boyFriend = new BoyFriend();
//                    支持多线程
                    instance = boyFriend;

                }
            }
        }
        return instance;
    }

    @Override
    public String toString() {
        return "BoyFriend{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
